package com.mastercard.assets.web.struts.forms ;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.mastercard.assets.MasterCardException;
import com.mastercard.assets.jpa.TblUsuario;
import com.mastercard.assets.util.MCUtil;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.util.to.ManejadorPaquetesAutorizar;
import com.mastercard.assets.web.util.to.ManejadorPaquetesSolicitar;
import com.mastercard.assets.web.util.to.PaqueteAutorizar;
import com.mastercard.assets.web.util.to.PaqueteSolicitar;
import com.mastercard.assets.web.util.to.UserLogin;

public class AutorizarPaqueteRegistrarForm
	extends
		ActionForm
{
	private int cveCuenta ;
	private int cveTipoCuenta ;
	
	private ManejadorPaquetesAutorizar packageManager = new ManejadorPaquetesAutorizar( ) ;
	private String[ ] registro ;
	private int[ ] countIdOrder ;

	public String[] getRegistro() {
		return registro;
	}

	public void setRegistro(String[] registro) {
		this.registro = registro;
	}

	public int[] getCountIdOrder() {
		return countIdOrder;
	}

	public void setCountIdOrder(int[] countIdOrder) {
		this.countIdOrder = countIdOrder;
	}

	public int getCveCuenta() {
		return cveCuenta;
	}

	public void setCveCuenta(int cveCuenta) {
		this.cveCuenta = cveCuenta;
		packageManager.setCveCuenta( cveCuenta ) ;
	}

	public int getCveTipoCuenta() {
		return cveTipoCuenta;
	}

	public void setCveTipoCuenta(int cveTipoCuenta) {
		this.cveTipoCuenta = cveTipoCuenta;
		packageManager.setCveTipoCuenta( cveTipoCuenta ) ;
	}

	public ManejadorPaquetesAutorizar getPackageManager( )
	{
		return packageManager ;
	}
	
	public ActionErrors validate( ActionMapping mapping , HttpServletRequest request )
	{
		ActionErrors errors = new ActionErrors( ) ;
		
		try
		{
			UserLogin user = ( UserLogin ) request.getSession( ).getAttribute( "UserLogin" ) ;
			packageManager.setBindCounts( user.getBindCounts( ) ) ;
			packageManager.initialize( ) ;
			
			// toma el tamanio de las cuentas hemanas
			int bindCountsSize = packageManager.getNumberOfBindCounts( ) ;
			int lastIndex = bindCountsSize - 1 ;
			// tamanio de paquetes
			int packageSize = packageManager.getNumberOfPackage( ) ;
			
//			// inicializa el doble arreglo
//			int[ ][ ] registroInt = new int[ packageSize ][ bindCountsSize ] ;
//			
			int indexFirst = 0 ;
			int indexSecond = 0 ;
			
			// paquetes
			List< PaqueteAutorizar > paquetes = packageManager.getPaqueteAutorizarLista( ) ;
			
//			for( String s : registro )
//			{
//				// intenta convertir el String en numero
//				try
//				{
//					registroInt[ indexFirst ][ indexSecond ] = Integer.parseInt( s ) ;
//				}catch( Exception e )
//				{
//					e.printStackTrace( ) ;
//					PaqueteAutorizar paqAut = paquetes.get( indexFirst ) ;
//					// en caso de error
//					errors.add( "WrongNumber" , new ActionMessage( "com.mastercard.assets.web.errors.modules.tipocuenta.autorizarpaquetes.WrongNumber" , new Object[]{ paqAut.getEvento( ).getNombre( ) , ( ( paqAut.getTipoHabitacion( ) == 1 ) ? "sencilla" : "doble" ) , s , paqAut.getBindCounts( ).get( indexSecond ).getNombre( ) } ) ) ;
//				}
//				
//				// en caso de que termine el indexSecond
//				if( indexSecond < lastIndex )
//				{
//					indexSecond++ ;
//				}
//				// en caso de que sea el iultimo indice
//				else
//				{
//					indexSecond = 0 ;
//					indexFirst++ ;
//				}
//			}
			
//			// en caso de errores
//			if( errors.size( ) > 0 )
//				return errors ;
//			
//			// en caso d eque no haya errores
//			// recorre los arreglos
//			for( int i = 0 ; i < registroInt.length ; i++ )
//			{
//				// toma el arreglo y lo asigna al paquete
//				paquetes.get( i ).setAutorizados( registroInt[ i ] ) ;
//			}
//				
		}catch( Exception e )
		{
			e.printStackTrace( ) ;
			errors.add( "Error" , new ActionMessage( "com.mastercard.assets.web.errors.modules.tipocuenta.autorizarpaquetes.ErrorOnForm" , e.getMessage( ) ) ) ;
		}
		
		return errors ;
	}

}
